package com.foreknow.demo2;

/**
 * java中的运算符
 * 1.算术运算符
 *    （+ - * % ++ --）
 *   1.1++(自增)  --(自减)
 *     例如：a++(表示变量a先参加运算然后自增加1)  ++a(变量a先自增加1，在参与运算)  a--   --a
 * 2.赋值运算符（=）/ 复合赋值运算符（+= -= *= %=）
 * 3.比较运算符(> >= < <= != ==) 最终的结果为boolean类型
 * 4.逻辑运算符(&& ||  ! )
 *     a && b : 只要a和b同时为true时候整个表达试结果才为true,只要一个为false 结果为false
 *     a || b: 只要a和b有一个true结果就为true
 *     !a: 相反
 * 5.三目条件运算符(三元运动算符)是由? :
 * 语法: int x= (逻辑运算) ? a:b
 *  当逻辑运算为true 返回 x= a
 *  当逻辑运算为false 返回 x=b
 *  注意:a和b的数据类型一定要与x的类型保持一致
 */
public class OperatorDemo {
    public static void main(String[] args) {

        //三元运算符
        int i = 5;
        char c = (i % 2 == 0)?'是':'否';
        System.out.println(c);

        //赋值运算符（=）/ 复合赋值运算符（+= -= *= %=）
        int aa = 23;
        int bb = 5;
        int cc = 2;
        bb = bb+aa;
//        bb += aa;
        System.out.println(bb);

        boolean x1 = (aa>bb) && (bb>cc);
        boolean x2 = (aa>bb) && (bb<cc);
        boolean x3 = (aa>bb) || (bb>cc);
        boolean x4 = (aa>bb) || (bb>cc);

        System.out.println(x1);
        System.out.println(x2);
        System.out.println(x3);
        System.out.println(x4);
        System.out.println("--------------------");

        //逻辑运算符会产生短路的情况


        short ss= 35;
//        ss = ss+1;  报错了 原因:ss为short类型 而1为int  short+int=int 需要强制类型转换
        ss += 1;
        System.out.println(ss);



        //比较运算符(> >= < <= != ==)
        //= 是赋值运算符 ==结果是boolean类型
        int aaa =3;
        int bbb =5;
        System.out.println(aaa>bbb);
        System.out.println(aaa>=bbb);
        System.out.println(aaa<bbb);
        System.out.println(aaa<=bbb);
        System.out.println(aaa != bbb);
        System.out.println(aaa == bbb);
        boolean isRight = aaa<=bbb;
        System.out.println(isRight);






        int a = 5;
        int b =  2;
        double b1 = a+b;
        double b2 = a/b;
        System.out.println(b1);
        System.out.println(b2);
        System.out.println(a % b);
        System.out.println(a * b);


        int x = 1;
        int y = x++;
        System.out.println(y);
        System.out.println(x);


        int k =1;
        int m = 3;
        int z = 5;

        int h = (k++ )+(--m)+(z++)+(++k)+(m--)+(++z);
        System.out.println(h);
    }
}
